"""
公共接口
"""

import os
from conf import settings
from db import models
from libs import common


logger = common.get_logger("common_interface")


# 判断类型下是否有对象的接口
def check_obj_is_exist(user_type):

    # 获取管理员文件路径，如果存在文件，说明管理员已存在
    admin_dir = os.path.join(settings.DB_DIR, user_type)

    # and偷懒原则：如果and前面的条件为False，则后面的条件不会执行
    if os.path.isdir(admin_dir) and os.listdir(admin_dir):  # 管理员目录存在且不为空
        return True, f"{user_type}已存在"
    else:
        return False, f"{user_type}不存在"


# 公共登录接口
def login_interface(name, password, user_type):

    # 获取用户数据
    # if user_type == "Admin":
    #     obj = models.Admin.select(name)
    # elif user_type == "Teacher":
    #     obj = models.Teacher.select(name)
    # elif user_type == "Student":
    #     obj = models.Student.select(name)

    cls = getattr(models, user_type)
    obj = cls.select(name)

    # 如果没有查到数据
    if not obj:
        return False, "用户不存在"

    # 校验密码
    if obj.password != password:
        return False, "密码错误"

    # 判断用户是否被冻结
    if obj.locked:
        return False, "用户已被冻结"

    # 返回登录成功
    logger.info(f"{name}登录成功！")
    return True, f"{name}登录成功！"
